Skip to content

Deduplicate MFT capacitor/welding and X7R0402 geometry - #15723

Merged
sawenzel merged 1 commit into
AliceO2Group:devfrom
sawenzel:swenzel/mft-electric-component-dedup
Aug 28, 2026
Merged

Deduplicate MFT capacitor/welding and X7R0402 geometry#15723
sawenzel merged 1 commit into
AliceO2Group:devfrom
sawenzel:swenzel/mft-electric-component-dedup

Conversation

@sawenzel

@sawenzel sawenzel commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Deduplicate MFT capacitor/welding and X7R0402 geometry

Deduplicate geometrically identical MFT capacitor/welding TGeoVolumes and
the X7R0402 assembly, reducing the ALICE geometry by ~15k logical volumes.

  • Geant4 initialization: 26.3s → 17.0s (~35% faster).
  • Logical volume UIDs: 27,491 → 6,919, while preserving 5,465,235 nodes.
  • Verified that the deduplicated volumes are never accessed by name, so no
    alignment or hit-scoring dependencies are affected.
  • Verified that generated hits are bit-by-bit identical before and after
    the change.
  • Adds dimension-consistency guards to the static geometry cache.
  • Makes geometry transformations to Geant4/VecGeom/CAD substantially more
    tractable by drastically simplifying the geometry volume graph.

A major simplification of the ALICE geometry with significant benefits for
downstream geometry transformation and processing workflows.

Deduplicate geometrically identical MFT capacitor/welding TGeoVolumes and
the X7R0402 assembly, reducing the ALICE geometry by ~15k logical volumes.

* Geant4 initialization: 26.3s → 17.0s (~35% faster).
* Logical volume UIDs: 27,491 → 6,919, while preserving 5,465,235 nodes.
* Verified that the deduplicated volumes are never accessed by name, so no
  alignment or hit-scoring dependencies are affected.
* Verified that generated hits are bit-by-bit identical before and after
  the change.
* Adds dimension-consistency guards to the static geometry cache.
* Makes geometry transformations to Geant4/VecGeom/CAD substantially more
  tractable by drastically simplifying the geometry volume graph.

A major simplification of the ALICE geometry with significant benefits for
downstream geometry transformation and processing workflows.
@sawenzel
sawenzel force-pushed the swenzel/mft-electric-component-dedup branch from 60f967a to 1610003 Compare August 26, 2026 08:42
@mcoquet642
mcoquet642 enabled auto-merge (squash) August 28, 2026 08:54
@sawenzel
sawenzel disabled auto-merge August 28, 2026 17:48
@sawenzel
sawenzel merged commit 425d9ee into AliceO2Group:dev Aug 28, 2026
9 of 11 checks passed
@sawenzel
sawenzel deleted the swenzel/mft-electric-component-dedup branch August 28, 2026 17:49
sawenzel added a commit to sawenzel/AliceO2 that referenced this pull request Aug 28, 2026
This deduplicates the MFT flex printed-circuit assembly, its connector and the
ALPIDE metal stack, and adds a name-based lookup for the deduplicated flex
volumes. It is a follow-up on AliceO2Group#15723
and extends geometry simplification ideas to MFT Flex.

- The flex and its five layers were rebuilt for each of the 280 ladders, although
  Ladder.cxx derives the flex length from the sensor count alone, so ladders with
  the same sensor count get an identical flex.
- Flex::makeFlex() now builds one flex per sensor-count class, guarded by a
  LOG(fatal) if a later call presents a different length for a class already built.
- The connector pad and its PEEK box are the same solids on every flex and are now
  built once.
- MetalStack in AlpideChip::createChip() is the same solid in every ALPIDE chip of
  both ITS and MFT and is now built once, guarded on its half lengths.
- Every cache is dropped when gGeoManager changes, so a second geometry built in
  the same process cannot inherit a dangling pointer. The X7R0402 cache got the
  same guard.
- The deduplicated volumes are named for the sensor count (flex_3, lineslayer_3,
  varnishlayer_3_0) instead of for half/disk/ladder. Flex::composeFlexName(),
  composeFlexLayerName() and getFlexVolume() resolve them, the last through
  gGeoManager so it also answers on a geometry read back from a file. The ladder a
  placement belongs to is still read from the node path.

In result, an MFT-only geometry goes from 5281 to 2788 TGeoVolumes and from 32798 to 5650
TGeoNodes; ITS and MFT together from 5687 to 3187 volumes. The number of physical nodes is
unchanged at 50044.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants